﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Biciq.Datos;

namespace Biciq.Silverlight.UI
{
    public class BloquearInscripcionVistaModelo: VistaModeloBase
    {
        private Cliente _cliente;
        private BajaBloqueoInscripcion _bajaBloqueoCliente;
        private bool _baja;

        public bool Baja
        {
            get { return _baja; }
            set 
            {
                _baja = value;
                RaisePropertyChanged("Baja");
            }
        }
        private bool _bloqueo;

        public bool Bloqueo
        {
            get { return _bloqueo; }
            set 
            {
                _bloqueo = value;
                RaisePropertyChanged("Bloqueo");
            }
        }

        /// <summary>
        /// Comando que bloquea inscripción del usuario.
        /// </summary>
        public BajaBloqueoInscripcion BajaBloqueoCliente
        {
            get { return _bajaBloqueoCliente; }
            set 
            {
                _bajaBloqueoCliente = value;
                RaisePropertyChanged("BajaBloqueoCliente");
            }
        }


        public Cliente Cliente
        {
            get { return _cliente; }
            set 
            {
                _cliente = value;
                RaisePropertyChanged("Cliente");
            }
        }
        /// <summary>
        /// Vista del bloque de usuarios.
        /// </summary>
        /// <param name="clienteSeleccionado"></param>
        public BloquearInscripcionVistaModelo(Cliente clienteSeleccionado )
        {
            Cliente = clienteSeleccionado;
            BajaBloqueoCliente = new BajaBloqueoInscripcion();
            BajaBloqueoCliente.estado = "ACTIVO";
            BajaBloqueoCliente.id = Guid.NewGuid();
            BajaBloqueoCliente.idCliente = clienteSeleccionado.Id;
            Baja = false;
            Bloqueo = false;


        }
        /// <summary>
        ///  Metodo que se dispara al dar click en Guardar.
        /// </summary>
        public override void Guardar()
        {
            InicializarMensajesError();
            Validar();
            if (ListaErrores.Count > 0)
            {
                MostrarErrores = Visibility.Visible;
                return;
            }

            BiciqContexto.BajaBloqueoInscripcions.Add(BajaBloqueoCliente);
            Cliente.Estado = "Inactivo";
            Procesando = true;
            BiciqContexto.SubmitChanges().Completed += delegate
            {
                Procesando = false;
                LogicStudio.Framework.UI.Controles.CuadroDialogo.Mostrar("El Bloqueo o Baja de inscripción  se ha realizado exitosamente", "Bloqueo Exitoso", LogicStudio.Framework.UI.Utilidades.TipoVentana.Ok);
                CerrarVentana();
            };

        }

        private void Validar()
        {
            if (!Baja && !Bloqueo)
            {
                AgregarMensajeError("Debe seleccionar la operación a realizar");

            }
            if (BajaBloqueoCliente.motivo == null || BajaBloqueoCliente.motivo == "")
            {
                AgregarMensajeError("Debe ingresar el Motivo");
            }

        }

        public override void Cancelar()
        {
            Cancelar(BiciqContexto);
        }
    }
}
